package com.ruoyi.voucher.domain.dto;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

@Data
public class VoucherDto {
    private static final long serialVersionUID = 1L;

    /**
     * 凭证ID
     */
    private Long voucherId;

    /**
     * 凭证字号
     */
    @Excel(name = "凭证字号", required = false)
    private String voucherNo;

    /**
     * 开票日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "开票日期", width = 30, dateFormat = "yyyy-MM-dd", required = false)
    private Date voucherDate;

    /**
     * 账期YYYYMM
     */
    @Excel(name = "账期YYYYMM", required = false)
    private String accountPeriod;

    /**
     * 附单据数量
     */
    @Excel(name = "附单据数量", required = false)
    private Long attachmentCount;

    /**
     * 合计金额
     */
    @Excel(name = "合计金额", required = false)
    private BigDecimal totalAmount;

    /**
     * 剩余可冲销金额
     */
    @Excel(name = "剩余可冲销金额", required = false)
    private BigDecimal remainingAmount;

    /**
     * 审核人ID
     */
    @Excel(name = "审核人ID", required = false)
    private Long auditorId;

    /**
     * 审核状态
     */
    @Excel(name = "审核状态", required = false)
    private Integer auditStatus;

    /**
     * 审核时间
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", required = false)
    private Date auditTime;

    /**
     * 作废状态
     */
    @Excel(name = "作废状态", required = false)
    private Long isVoid;

    /**
     * 作废时间
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "作废时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", required = false)
    private Date voidTime;

    /**
     * 红冲时间
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "红冲时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", required = false)
    private Date reversalTime;

    /**
     * 账套ID
     */
    @Excel(name = "账套ID", required = false)
    private Long accountId;

    /**
     * 凭证字ID
     */
    @Excel(name = "凭证字ID", required = false)
    private Long wordId;

    /**
     * 创建人
     */
    @Excel(name = "创建人", required = false)
    @TableField(fill = FieldFill.UPDATE)
    private String createBy;

    /**
     * 创建时间
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "修改时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", required = false)
    @TableField(fill = FieldFill.UPDATE)
    private Date createTime;

    /**
     * 修改人
     */
    @Excel(name = "修改人", required = false)
    private String updateBy;

    /**
     * 修改时间
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "修改时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", required = false)
    private Date updateTime;

    /**
     * 逻辑删除
     */
    @Excel(name = "逻辑删除", required = false)
    private Integer isDeleted;

    /**
     * 版本号
     */
    @Excel(name = "版本号", required = false)
    private Long version;

    private String accountName;

    private String summaryCount;

    private String subjectCode;

    private String subjectName;

    private String wordName;

    private BigDecimal debitAmount;

    private BigDecimal creditAmount;
}
